<html>
<body>

<h3>函数功能</h3>该函数CallWindowProc将消息信息传送给指定的窗口过程。<br>
<h3>函数原型</h3>LRESULT CallWindowProc（WNDPROC lpPrevWndFunc，HWND hWnd．UINT Msg，WPARAM wParam，LPARAMIParam）；<br>
<h3>参数</h3>
lpPrevWndFunc：指向前一个窗口过程的指针。如果该值是通过调用GetWindowLong函数，并将该函数中的nlndex参数设为GWL_WNDPROC或DWL_DLGPROC而得到的，那么它实际上要么是窗口或者对话框的地址，要么就是代表该地址的句柄。<br>
hWnd：指向接收消息的窗口过程的句柄。<br>
Msg：指定消息类型。<br>
wParam：指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。<br>
IParam：指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。<br>
<h3>返回值</h3>返回值指定了消息处理结果，它与发送的消息有关。<br>
备注：使用函数CallWindowsProc可进行窗口子分类。通常来说，同一类的所有窗口共享一个窗口过程。子类是一个窗口或者相同类的一套窗口，在其消息被传送到该类的窗口过程之前，这些消息是由另一个窗口过程进行解释和处理的。<br>
SetWindowLoog函数通过改变与特定窗口相关的窗日过程，使系统调用新的窗口过程来创建子类，新的窗口过程替换了以前的窗口过程。应用程序必须通过调用CallWindowsProc来将新窗日过程没有处理的任何消息传送到以前的窗口过程中，这样就允许应用程序创建一系列窗口过程。<br>
如果定义了STRICT，那么lpPrevWndFunc参数具有WNDPROC数据类型。WNDPROC类型说明如下：<br>
LRESULT（CALLBACK· WNDPROC）（HWND， UINT WPARAM，LPARAM）<br>
如果没有定义STRICT，那么lpPrevWndFunc参数具有FARPROC数据类型。FARPROC类型说明如下：int（FAR WINAPL·FARPROC）（）<br>
在C语言中，FARPROC申明表示为一个没有指定参数表的回调函数。然而在 C＋＋中；申明中的空参数表示该函数没有参数。这种微妙的区别有可能引起代码出错。下面是一种解决办法：#ifdef STRICT；WNDPROC MyWindowProcedure；#else；FARPROC MyindowProcedure；#endif IResult=CallWindowProc（MyWindowProcedure，…）<br>
有关该函数的空参数表方面进一步的信息，清参考Bjarne Stroustrup编写的C＋＋编程语言第2版。<br>
对于Windows NT：函数CallWindowsProc function进行了Unicode至ANSf转换处理。如果你直接调用该窗口过程，那么无法利用该转换。<br>
<h3>速查</h3>Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：1.0以上版本；头文件：winuser.h；库文件：user32.lib：Unicode：在Windows NT环境中以Unicode和ANSI版本实现。<br>

</body>
</html>
